import sa from '/@/sa-frame/sa';
import {useUserStore} from "../store/user";
import router from "../router";
import {addRoutesByMenuList} from "../router/routes-dynamic";
import {defineMenu} from "../router/router-util";
import {useSettingStore} from "../store/setting";
import {useAppStore} from "../store/app";
import {menuList,getRoleMenu,perList} from "../router/menu-list";
import mitt from "@/mitt";

// Admin 模板初始化函数 
export default function(jumpPath) {
    
    const appStore = useAppStore();
    let settingStore = useSettingStore();
    // 获取当前会话信息 
    sa.ajax("/api/fund/getLoginInfo", function (res) {
        // let userInfo = useUserStore().userInfo
        let data = res.data
        if(data) {
            let role = data.RoleId
            if(role == '0') {
                sa.alert('当前账号暂无进入后台权限', function (){
                    router.push('/login');
                });
                return
            }
             // 把账号相关信息，保存到本地 
             sa.$sys.setCurrUser(data);
             // 配置信息
             let appCfg = {
                "appName": data.fixmedins_name,
                "appLogo": "http://file.dev33.cn/ssp/ssp-logo-480.png",
                "appVersion": "v1.0.0",
                "appIntro": data.fixmedins_name,
                "isDynamicInfo": "false",
                "appUpdateTime": "2024-x-x"
              }
            sa.$sys.setAppCfg(appCfg);
             // 保存权限数据
             sa.setAuth(perList);
             // 初始化右上角的菜单选项 
            appStore.setAppInfo(appCfg);
           
            // role = 'admin'
            // role = 'doctor'
            const menus = getRoleMenu(role);
            //const menus = menuList;
            console.log('菜单列表：', menus)
            // 初始化菜单, isServerMenu=菜单加载模式, true=从后端请求获取菜单, false=前端定义菜单 (menu-list.js 文件里定义)
            const beMenuList = menus;
            addRoutesByMenuList(beMenuList);
            appStore.setMenuList(beMenuList, perList);
    
            if(jumpPath) {
                router.push(jumpPath);
            }
            
            // 初始化右上角的菜单选项 
            initDropList();
    
            // 初始化模板，一定要调用 
            appStore.init();
        }else {
            router.push('/login');
        }
    })
    return
 
    // 获取当前会话信息 
    sa.ajax("/AccAdmin/getLoginInfo", function (res) {

        // 校验当前登录账号，是否有权限进入后台 
        if(res.data.perList === undefined || res.data.perList.indexOf('in-system') === -1) {
            sa.$sys.setCurrUser(res.data.admin);
            return sa.alert('当前账号暂无进入后台权限', function (){
                router.push('/login');
            });
        }

        // 把账号相关信息，保存到本地 
        sa.$sys.setCurrUser(res.data.admin);
        useUserStore().setUserInfo({
            name: res.data.admin.name,
            avatar: res.data.admin.avatar
        });

        // 配置信息
        sa.$sys.setAppCfg(res.data.appCfg);

        // 保存权限数据
        sa.setAuth(perList);

        // 初始化右上角的菜单选项 
        appStore.setAppInfo(res.data.appCfg);
        const role = 'user'
        const menus = getRoleMenu(role);
        console.log('菜单列表：', menus)
        // 初始化菜单, isServerMenu=菜单加载模式, true=从后端请求获取菜单, false=前端定义菜单 (menu-list.js 文件里定义)
        const beMenuList = settingStore.isServerMenu ? defineMenu(res.data.menuList) : menus;
        console.log('beMenuList', beMenuList)
        addRoutesByMenuList(beMenuList);
        // appStore.setMenuList(beMenuList, res.data.perList);
        appStore.setMenuList(beMenuList, perList);
        
        if(jumpPath) {
            router.push(jumpPath);
        }
        
        // 初始化右上角的菜单选项 
        initDropList();

        // 初始化模板，一定要调用 
        appStore.init();
    }, {msg: '加载初始数据...', msgType: 'layer'})
        
}

// 初始化右上角的菜单选项 
const initDropList = function () {
    const layer = sa.layer;
    useUserStore().setDropList([
        {
            name: '我的资料',
            click: function (){
                sa.$page.openAdminInfo();
            }
        },
        // {
        //     name: '修改资料',
        //     click: function () {
        //         sa.showModel("修改我的资料", () => import('../sp-views/sp-admin/admin-add'), {
        //             id: sa.$sys.getCurrUser().id,
        //             curr: true
        //         })
        //     }
        // },
        {
            name: '修改密码',
            click: function () {
                sa.showModel('修改密码', import('@/sp-views/sp-admin/update-password'))
                // sa.showIframe('修改密码', 'sa-view-sp/sp-admin/update-password.html', '550px', '350px');
            }
        },
        {
            name: '退出登录',
            click: function (){
                sa.confirm('退出登录？', function() {
                    sa.ajax('/api/fund/logout', function(res) {
                        sa.alert('注销成功', function() {
                            close_all()
                            localStorage.clear()
                            layer.closeAll()
                            setTimeout(function() {
                                // router.push(`/login?redirect=${encodeURIComponent(router.currentRoute.value.fullPath)}`)
                                router.push(`/login`)
                            }, 10)
                        })
                    })
                });
            }
        }
    ])
}

// 关闭所有tab
const close_all = function() {
    const appStore = useAppStore();
    appStore.clearAllTab()
    // // 递归删除
    // let i = 0;
    // const deleteFn = function() {
    // // 如果已经遍历全部
    //     if(i >= appStore.tabList.length) {
    //         return;
    //     }
    //     // 如果在白名单,i++继续遍历, 如果不是,递归删除
    //     const tab = appStore.tabList[i];
    //     if(tab === appStore.homeTab){
    //         i++;
    //         deleteFn();
    //     } else {
    //         appStore.closeTab(tab, function() {
    //             deleteFn();
    //         });
    //     }
    // };
    // deleteFn();
};
